home *** CD-ROM | disk | FTP | other *** search
/ Fritz: All Fritz / All Fritz.zip / All Fritz / FILES / SPREOTUS / 123TECH.LZH / LOOPMAC.TXT < prev    next >
Text File  |  1984-11-24  |  8KB  |  217 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.                                     Looping Macros
  10.  
  11.           This short article outlines several practical uses for macros which loop, or
  12.           repeat tasks, until the user chooses to stop performing an operation.
  13.  
  14.           Simplifying Use of Numeric Keypad
  15.  
  16.           This macro allows you to use the numeric keypad at the right side of the
  17.           keyboard.  Of course, you can always use the keypad by pressing the [Num Lock]
  18.           key, or by holding down the [Shift] key while typing the numbers on the pad.
  19.           Unfortunately, the cursor motion keys are on the same pad, and you usually move
  20.           the cell pointer after typing each number.  This macro takes care of moving the
  21.           cell pointer, so it is named \M, for Move.  While using it, you should leave the
  22.           [Num Lock] on.  The NUM indicator in the lower right-hand corner of the screen
  23.           is displayed when the numeric keypad is set for the input of numbers only.
  24.  
  25.           The Move Macro takes advantage of the special macro instruction {?}.  This
  26.           stops execution of the macro and gives control of 1-2-3 back to you.  The
  27.           macro resumes when you press [Enter].  1-2-3 lets you know that you are
  28.  
  29.  
  30.  
  31.  
  32.  
  33.  
  34.  
  35.  
  36.  
  37.  
  38.  
  39.  
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.  
  71.  
  72.  
  73.  
  74.  
  75.           still in a macro by displaying the CMD indicator next to the Mode indicator
  76.           in the upper right-hand corner of the screen.
  77.  
  78.           The Move Macro waits until you make an entry, and moves the cell pointer when
  79.           you press [Enter].  For this example the macro will move the cell pointer down,
  80.           but it could be written to move it laterally or diagonally.  Without looping, it
  81.           consists of just two instructions:
  82.  
  83.             Range Name     Command     Comments
  84.                  \M          {?}       Wait until [Enter].
  85.                            {down}      Move the cell pointer down.
  86.  
  87.           When you press Alt-M, the CMD indicator is displayed, but nothing else happens
  88.           because the first instruction is to wait.  Type an entry, press [Enter], and the
  89.           cell pointer will move down.  Since you don't need a cursor key, you could leave
  90.           the [Num Lock] on. So far, however, this is not very helpful since typing Alt-M
  91.           before each entry is more bother than any of the alternatives.
  92.  
  93.           Creating a Looping Macro
  94.  
  95.           The solution is the loop.  To make the macro repeat itself, an "invisible" X
  96.           command in the 1-2-3 top level command menu (the one that begins
  97.           "Worksheet...Range...") must be used.  /X commands may only be used in macros.
  98.           1-2-3 commands are written in macros as a slash (/) followed by one or more
  99.           letters.  The /X commands consist of /X followed by one letter.  For example,
  100.           /XQ quits a macro and /XM puts up the command menu.  /XG is the macro Goto
  101.           command that may be used to make a macro loop.  (By the way, don't confuse /XG
  102.           with the F5 {goto} key, which moves the cell pointer, and which can also be used
  103.           in macros.)
  104.  
  105.           The /XG command tells 1-2-3 to get its next macro instruction from somewhere
  106.           other than the rest of the label or the next label cell down, as it normally
  107.           would.  After the G, enter a cell coordinate or range name, to tell 1-2-3 where
  108.           to get its next set of instructions.  Enter a tilde (~) after the coordinate or
  109.           range name.
  110.  
  111.           HINT: Using range names is better than using cell coordinates
  112.                  because it will insure that the macro will function
  113.                  correctly when you /Move cells, or /Worksheet Insert and
  114.                  Delete Rows and Columns.  Assign range names to individual
  115.                  cells containing macro commands.  To keep things clear,
  116.                  place the range names as labels in the column to the left
  117.                  of the macro instructions, and use the /Range Name Label
  118.                  Right command to assign them to the first step of each
  119.                  macro routine.  If a named range contains more than one
  120.                  cell, the /XG command will begin execution at the top left
  121.                  corner of the range.
  122.  
  123.           In this case, it would be preferable for the entire macro to repeat, and it
  124.           already has a range name, \M.  To make the macro repeat, just type this label in
  125.  
  126.  
  127.  
  128.  
  129.  
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136.  
  137.  
  138.  
  139.  
  140.  
  141.           the cell below the cell containing {down}:
  142.  
  143.  
  144.                /XG\M~     Go back to the beginning of the macro.
  145.  
  146.           After the macro has moved the cell pointer down, it performs the instruction in
  147.           the next cell in the macro.  This instruction tells 1-2-3 to go back to the
  148.           start of the macro, where it again waits until you press [Enter], moves the cell
  149.           pointer down, repeating indefinitely.
  150.  
  151.           Stopping This Macro
  152.  
  153.           Now that an endless loop has been established, how can it be stopped? The best
  154.           method is to hold down the [Ctrl] key and press [Scroll-Lock/Break].  When you
  155.           see ERROR in the Mode Indicator, don't worry.  Press [Enter], [Esc], or
  156.           [Ctrl-Break] again and everything will be fine.  This method can be used to stop
  157.           execution of any macro, a printing operation, or a long /Data Table calculation.
  158.           Before you [Ctrl-Break] out of this macro, however, consider entering another
  159.           column of numbers.  While 1-2-3 is waiting (the CMD indicator is on), you may
  160.           move the cell pointer.  Just turn off the [Num-Lock] or press shift while
  161.           pressing the cursor keys. Otherwise, you'll get a string of digits typed in the
  162.           current cell.
  163.  
  164.           Clarifying the Meaning of Tilde (~)
  165.  
  166.           You may have some lingering questions about the when's and why's of the tilde.
  167.           To further illustrate its use, examine the following macro.  It moves down a
  168.           column of labels, editing each one and stopping to allow you to add to the
  169.           existing label.
  170.  
  171.             \E  {edit}{?}~    Edit the label and wait for [Enter].
  172.                 {down}        Move the cell pointer down.
  173.                 /XG\E~        Repeat the macro from the beginning.
  174.  
  175.           There are only two differences between this macro and the Move Macro.  The
  176.           {edit} key is obvious.  But why the tilde after the {?}; you have to press
  177.           [Enter] to resume the macro anyway.  The answer is that the {?} "swallows" the
  178.           [Enter]; it is never sent to 1-2-3.  To exit Edit mode, you must press [Enter].
  179.           This is done by the macro when it reads the tilde.  In the Move Macro, no
  180.           [Enter] was needed and, just as none is needed when you are entering values or
  181.           labels, no tilde is required after the {?}.
  182.  
  183.           {?} as a Breakpoint
  184.  
  185.           If you're setting out to do more extensive macro programming, one more hint is
  186.           in order.  The {?} wait instruction is what programmers call a "breakpoint." It
  187.           stops everything and lets you examine your work.  If you've written a large
  188.           macro and it's not doing what you think it should, put breakpoints at the ends
  189.           of several of your macro labels.  Then, when execution stops, you can look
  190.           around the spreadsheet to see if, so far, things are as they should be.
  191.  
  192.  
  193.  
  194.  
  195.  
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202.  
  203.  
  204.  
  205.  
  206.  
  207.           In Summary
  208.  
  209.           The pointer movement was entered into three cells in a column, but could be
  210.           stored in any number of ways.  If you use it a lot, you might want to put it in
  211.           one line:
  212.  
  213.           \M  {?}{down}/XG\M~    Wait, move down and repeat.
  214.  
  215.           The Move Macro is handy; it could be tremendously helpful when entering a large
  216.           amount of numeric data.
  217.